/**
 * 主要常用功能
 */

/**
 * 深拷贝方法
 * @param {*} data
 * @returns {*}
 */
export const deepCopy = function (data) {
  if (data !== null && typeof data === "object") {
    const newData = Array.isArray(data) ? [] : {};
    for (const key in data) {
      newData[key] = deepCopy(data[key]);
    }
  }
  return data;
};

/**
 * 判断设备类型(自调用函数)
 * @returns {object}
 */
export const isMobile = (function () {
  let mobile = {};
  // #ifdef H5
  const ua = navigator.userAgent,
    isWindowsPhone = /(?:Windows Phone)/.test(ua),
    isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,
    isAndroid = /(?:Android)/.test(ua),
    isFireFox = /(?:Firefox)/.test(ua),
    isChrome = /(?:Chrome|CriOS)/.test(ua),
    isTablet =
      /(?:iPad|PlayBook)/.test(ua) ||
      (isAndroid && !/(?:Mobile)/.test(ua)) ||
      (isFireFox && /(?:Tablet)/.test(ua)),
    isPhone = /(?:iPhone)/.test(ua) && !isTablet,
    isPc = !isPhone && !isAndroid && !isSymbian;
  mobile = {
    // 是否是平板
    isTablet,
    // 是否是手机
    isPhone,
    // 安卓(用不到)
    isAndroid,
    // pc(用不到)
    isPc,
    isChrome,
  };
  // #endif
  return mobile;
})();

/**
 * 生成渐变色字符串或颜色值
 * @param {array|string} data [startColor, endColor] 或 字符串
 * @param {number} type 渐变方式
 */
export const getColor = (data, type = "90") => {
  if (Array.isArray(data) && data.length >= 2) {
    return `linear-gradient(${type}deg, ${data[0]} 0%, ${data[1]} 100%)`;
  } else {
    return data;
  }
};
